Acumulador

Top 


 

Acumulador (ACC)

 

        Variable interna que lleva el resultado de las operaciones. Aparte del acumulador principal ACC existen acumuladores secundarios (ACC(-1), ACC(-2), etc). Algunas operaciones producen un desplazamiento de acumuladores para que los estados anteriores no se pierdan (quedan en los secundarios). Algunas operaciones requieren de los datos memorizados en los acumuladores secundarios, como por ejemplo el contador.

 

Rotación

Nuevo valor -> Acc -> Acc(-1) -> Acc(-2) ....

Rotación inversa

Acc <- Acc(-1) <- Acc(-2) <- Acc(-3)....

 

   Normalmente en una rotación inversa en ACC queda el resultado de la operación (instrucción) y no el acumulador anterior.

 

    Las instrucciones que hacen una rotación del acumulador son:

 
FAVG
LD
LDN
LDT
LDX
NOT (sin argumentos)
RD3X
RD4X
READ3X
READ4X
STDVT
WR4X
WRITE4X

    Las instrucciones que hacen una rotación inversa de acumuladores son:

 
ANDP
ORP
POP



    A partir del CP121 ROM 2.55 y CP122 ROM 2.03 el stack de acumuladores pasa de 8 a 20.

 Ejemplos

 

 Supongamos que la condición es que:

        X = 1 si ((A = 1) o (B = 1)) y (C = 1) y (D = 1)

 Para que sea 'verdadero' (activado o distinto de cero) C y D deben serlo, y d A y B solo se requiere uno:

        LD A        ;Acc = A        
        EQ 1        ;Acc = resultado comparación
        LD B        ;Acc = B; Acc(1) = comparación anterior
        EQ 1        ;Acc = resultado comparación
        ORP         ;Acc = OR de las 2 comparaciones anteriores
        LD C        ;Acc = C; Acc(1) = OR comparación
        EQ 1        ;Acc = resultado comparación
        LD D        ;Acc = D; Acc(2) = OR comparación; Acc(1) = comparación anterior
        EQ 1
        ;Acc = resultado comparación
        ANDP        ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)
        ANDP        ;Acc = Acc AND Acc(1)


 Supongamos que X = 1 si (A = 0) y (B = 1) y (C = 1) y (D = 1)

        LD A        ;Acc = A
        EQ 0        ;Acc = resultado comparación
        LD B        ;Acc = B; Acc(1) = comparación de A
        EQ 1        ;Acc = resultado comparación
        LD C        ;Acc = C; Acc(1) = comparación de B; Acc(2) = comparación de A
        EQ 1        ;Acc = resultado comparación
        LD D        ;Acc = D; Acc(1) = comparación de C; Acc(2) = comparación de B; Acc(3) = comparación de a
        EQ 1        ;Acc = resultado comparación
        ANDP        ;Acc = Acc AND Acc(1); Acc(1) = Acc(2); Acc(2) = Acc(3)
        ANDP        ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)
        ANDP        ;Acc = Acc AND Acc(1)



Lista de instrucciones
Indice